transform: Make sure the identity transform is equal to NULL
authorBenjamin Otte <otte@redhat.com>
Fri, 21 Feb 2020 17:25:05 +0000 (18:25 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 21 Feb 2020 17:25:05 +0000 (18:25 +0100)
gsk/gsktransform.c
testsuite/gsk/transform.c

index df6cb63bdd41d36b180964986912c980d7ff9244..19aa543b23b09a615b76ca76b3c098314d5e4af3 100644 (file)
@@ -1683,8 +1683,11 @@ gsk_transform_equal (GskTransform *first,
   if (first == second)
     return TRUE;
 
-  if (first == NULL || second == NULL)
-    return FALSE;
+  if (first == NULL)
+    return gsk_transform_is_identity (second);
+
+  if (second == NULL)
+    return gsk_transform_is_identity (first);
 
   if (first->transform_class != second->transform_class)
     return FALSE;
index 605d6f53cd8e406c9c93f6a9e8e65104be86b374..71ade76a491058d4be1bf505c04c15c29079a198 100644 (file)
@@ -332,6 +332,19 @@ test_identity (void)
   g_free (string);
 }
 
+static void
+test_identity_equal (void)
+{
+  GskTransform *id = gsk_transform_new ();
+
+  g_assert_true (gsk_transform_equal (NULL, NULL));
+  g_assert_true (gsk_transform_equal (id, NULL));
+  g_assert_true (gsk_transform_equal (NULL, id));
+  g_assert_true (gsk_transform_equal (id, id));
+
+  gsk_transform_unref (id);
+}
+
 static void
 test_print_parse (void)
 {